<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2017/8/9
 * Time: 14:50
 */

namespace app\index\controller;


class Weixinapi
{

      private $appid="wx624432bdd5d846f3";
      private $secret="2734412ee88e2f49b0d312cd32d6b31e";
    //启用curl 模仿游览器使用http协议访问链接
    public function  http_curl($url,$data=null){
        //1.初始化，创建一个新cURL资源
        $ch = curl_init();
        //2.设置URL和相应的选项
        curl_setopt($ch, CURLOPT_URL, $url);
        //curl_setopt($ch, CURLOPT_HEADER, 0);
        if(!empty($data)){
            curl_setopt($ch,CURLOPT_POST,1);
            curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
        }
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);//不检测服务器的证书是否由正规浏览器认证过的授权CA颁发
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);//不检测服务器的域名与证书上的是否一致
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);//禁止curl资源直接输出
        //3.抓取URL并把它传递给浏览器
        $opt=curl_exec($ch);
        //4.关闭cURL资源，并且释放系统资源
        curl_close($ch);
        return $opt;
    }

    //获取access_token
    public function getAccess_token()
    {
        $appid="wx624432bdd5d846f3";
        $secret="2734412ee88e2f49b0d312cd32d6b31e";
        $url="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appid}&secret={$secret}";
        $json=$this->http_curl($url);
        $result=json_decode($json);
        Cache::set('AccessToken',$result->access_token);
        return $result->access_token;
    }

    //创建自定义菜单
    public function create_freemenu()
    {
        //调用数据封装函数
        $token=$this->getAccess_token();
        $url="https://api.weixin.qq.com/cgi-bin/menu/create?access_token={$token}";
        //设置主菜单
        $data=<<<php
	{
    "button":[
              {
                "name":"闪借11",
                "sub_button":[
                {
                "type":"view",
                "name":"十万火急借款",
                "url":"http://www.yaotianzl.com/uploads/fuwu.html",
                "sub_button": [ ]
                },
                {
                "type":"view",
                "name":"手机认证",
                "url":"http://www.yaotianzl.com/uploads/fuwu.html",
                "sub_button": [ ]
                },
                {
                "type":"view",
                "name":"身份认证",
                "url":"http://www.yaotianzl.com/uploads/fuwu.html",
                "sub_button": [ ]
                },
                {
                "type":"view",
                "name":"更多认证",
                "url":"http://www.yaotianzl.com/uploads/fuwu.html",
                "sub_button": [ ]
                },
                 {
                "type":"view",
                "name":"法律责任",
                "url":"http://www.yaotianzl.com/uploads/fuwu.html",
                "sub_button": [ ]
                },
                ]
              },
              {
                  "name":"个人中心",
                  "sub_button":[
                                {	
                                 "type":"view",
                                 "name":"个人资料",
                                 "url":"http://www.yaotianzl.com/uploads/fuwu.html",
                                 "sub_button": [ ]
                                },
                                {
                                "type":"view",
                                "name":"我的借款",
                                "url":"http://www.yaotianzl.com/m/a/service/",
                                "sub_button": [ ]
                                },
                                {
                                "type":"view",
                                "name":"我要还款",
                                "url":"http://www.yaotianzl.com/",
                                "sub_button": [ ]
                                }
                                ]
                            },
                 {
                     "name":"更多服务",
                     "sub_button":[
                         {
                             "type":"view",
                             "name":"常见问题",
                             "url" :"http://www.yaotianzl.com/",
                             "sub_button": [ ]
                         },
                         {
                             "type":"view",
                             "name":"联系客服",
                             "url" :"http://www.yaotianzl.com/",
                             "sub_button": [ ]
                         }
                                  ]
                 }
                   ]
 }
php;
        //自定义菜单生成
        $result=$this->http_curl($url,$data);
        var_dump($result);
    }

    //获取用户基本信息
    public function get_weixinUserByOpenid($openId)
    {
        $token=$this->getAccess_token();
        $url  ="https://api.weixin.qq.com/cgi-bin/user/info?access_token={$token}&openid={$openId}&lang=zh_CN";
        $result=$this->http_curl($url);
        return json_decode($result);  //json字符串转换成json数组
    }

    //获取用户列表
    public function get_weixinUser_list($next_openid)
    {
        //$next_openid 默认为第一个拉取的openid 一次最多可以拉1000条 可以重复使用这个函数来满足要求
        $token =$this->getAccess_token();
        $url   ="https://api.weixin.qq.com/cgi-bin/user/get?access_token={$token}&next_openid={$next_openid}";
        $result=$this->http_curl($url);
        return json_decode($result);  //josn数据包
    }

    // 上传多媒体 文件类型 （图片（image）、语音（voice）、视频（video）和缩略图（thumb，主要用于视频与音乐格式的缩略图） ）
    public  function upload($filepath, $type) {
        if (!$filepath) {
            return false;
        }
        $token=$this->getAccess_token();
        $url = "http://file.api.weixin.qq.com/cgi-bin/media/upload?access_token={$token}&type={$type}";
        //加@符号curl就会把它当成是文件上传处理
        $data = array('media' => '@' . SITE_PATH001 . $filepath);
        $result = $this->http_curl($data, $url);
        $res = json_decode($result, true);
        return $res['media_id'];   //返回图文消息缩略图的media_id
    }

    //上传素材图文消息用于高级群发=》可以直接登录微信公众号中的素材管理进行编辑群发更方便 !!未使用
    public  function upload_PtMessage()
    {
        $token =$this->getAccess_token();
        $url   ="https://api.weixin.qq.com/cgi-bin/media/uploadnews?access_token={$token}";
        $data  ="{
          \"articles\": [
		 {
                        \"thumb_media_id\":\"qI6_Ze_6PtV7svjolgs-rN6stStuHIjs9_DidOHaj0Q-mwvBelOXCFZiq2OsIU-p\",
                        \"author\":\"xxx\",
			 \"title\":\"Happy Day\",
			 \"content_source_url\":\"www.qq.com\",
			 \"content\":\"content\",
			 \"digest\":\"digest\",
                        \"show_cover_pic\":1
		 },
		 {
                        \"thumb_media_id\":\"qI6_Ze_6PtV7svjolgs-rN6stStuHIjs9_DidOHaj0Q-mwvBelOXCFZiq2OsIU-p\",
                        \"author\":\"xxx\",
			 \"title\":\"Happy Day\",
			 \"content_source_url\":\"www.qq.com\",
			 \"content\":\"content\",
			 \"digest\":\"digest\",
                        \"show_cover_pic\":0
		 }
                         ]
              }";
        $result=$this->http_curl($data,$url);
        return json_encode($result);
        /*
         * 返回数据格式{
                      "type":"news",  媒体文件类型，分别有图片（image）、语音（voice）、视频（video）和缩略图（thumb），图文消息（news
                      "media_id":"CsEf3ldqkAYJAU6EJeIkStVDSvffUJ54vqbThMgplD-VJXXof6ctX5fI6-aYyUiQ", 媒体文件/图文消息上传后获取的唯一标识
                      "created_at":1391857799 媒体文件上传时间
}
         */
    }
    // 高级群发素材图文消息            ！！未使用 直接登录微信公众号建议图文消息群发更简单 ！！未使用
    public function send_alluserMessage()
    {
        $token=$this->getAccess_token();
        $url  ="https://api.weixin.qq.com/cgi-bin/message/mass/send?access_token={$token}";
        //touser 里面就是要发送用户的openId  media_id:对应的就是上面函数上传的返回的图文小心的media_ia
        $data="{
                  \"touser\":[
                  \"OPENID1\",
                  \"OPENID2\"
                             ],
                  \"mpnews\":{
                  \"media_id\":\"123dsdajkasd231jhksad\"
                },
                  \"msgtype\":\"mpnews\"，
                  \"send_ignore_reprint\":0
               }";
        $result=json_decode($this->http_curl($data,$url));
        if ($result['errcode'] == 0) {
            return true;
        } else {
            return $result;
        }
        /*
         * {
           "errcode":0,   错误码
           "errmsg":"send job submission success", 错误信息
           "msg_id":34182, 消息发送任务的ID
           "msg_data_id": 206227730 消息的数据ID，，该字段只有在群发图文消息时，才会出现。可以用于在图文分析数据接口中。
}
         * */

    }

    // 发送模板消息
    public function send_template($openId){
        $token=$this->getAccess_token();
        $url  ="https://api.weixin.qq.com/cgi-bin/message/template/send?access_token={$token}";
        //touser 发送的openid  template_id:模板ID url:跳转链接 data:具体内容
        $data=" {
           \"touser\":\"OPENID\",     
           \"template_id\":\"ngqIpbwh8bUfcSsECmogfXcV14J0tQlEpBO27izEYtY\",
           \"url\":\"http://weixin.qq.com/download\",          
           \"data\":{
                   \"first\": {
                       \"value\":\"恭喜你购买成功！\",
                       \"color\":\"#173177\"
                   },
                   \"keynote1\":{
                       \"value\":\"巧克力\",
                       \"color\":\"#173177\"
                   },
                   \"keynote2\": {
                       \"value\":\"39.8元\",
                       \"color\":\"#173177\"
                   },
                   \"keynote3\": {
                       \"value\":\"2014年9月22日\",
                       \"color\":\"#173177\"
                   },
                   \"remark\":{
                       \"value\":\"欢迎再次购买！\",
                       \"color\":\"#173177\"
                   }
           }
       }";
        $result=json_decode($this->http_curl($data,$url));
        return $result;
        /*
         *  {
            "errcode":0,  错误码
            "errmsg":"ok", 返回信息
            "msgid":200228332 处理编号
            }
         */
    }


    //引导网页授权的链接返回的code https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
    //网页授权获取用户信息中选择snsapi_base 静默授权获取用户的openid 在根据opneid 获取用户信息 这里获取access_token 区别于基础接口的access_token

    /*网页授权获取用户信息*/
    /**
     *（不会弹出页面，直接跳转，只能获取用户的openid）
     */
    public function byauth(){
        //公众号在微信的appid
        $appid = "wx624432bdd5d846f3";
        //重定向到回调地址
        $redirect_uri =urlencode('http://s.bonayiyou.com/index/home/getUserInfo');
        /*应用授权作用域，snsapi_base （不弹出授权页面，直接跳转，只能获取用户openid）
        snsapi_userinfo （弹出授权页面，可通过openid拿到昵称、性别、所在地。
        并且，即使在未关注的情况下，只要用户授权，也能获取其信息）*/
        $scope = 'snsapi_base';
        //重定向后会带上state参数，开发者可以填写a-zA-Z0-9的参数值，最多128字节
        $state = '';
        //进行重定向操作
        $url = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid='.$appid.'&redirect_uri='.$redirect_uri.'&response_type=code&scope='.$scope.'&state='.$state.'#wechat_redirect';
        header("Location:".$url);
    }

    /**
     * 得到用户信息
     */
    public function getUserInfo(){
        //通过code换取网页授权access_token（访问令牌）
        $appid = "wx624432bdd5d846f3";//公众号在微信的appid
        $secret = "2734412ee88e2f49b0d312cd32d6b31e";//微信生成的秘钥
        $code = $_GET["code"];
        $get_token_url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$appid.'&secret='.$secret.'&code='.$code.'&grant_type=authorization_code';
        $json_obj =json_decode($this->http_curl($get_token_url));
        //获取用户的openid  我这里就返回的openid 用于判断用户是不是存在
        return $json_obj->openid;
        //refresh_token有效期为30天，当refresh_token失效之后，需要用户重新授权。
        $refresh_token=$json_obj['refresh_token'];
        //获取第二步的refresh_token后，请求以下链接获取access_token：
        $get_user_info_url="https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=".$appid."&grant_type=refresh_token&refresh_token=".$refresh_token;
        //获取到用户信息
        $userinfo = $this->http_curl($get_user_info_url);

    }




}